/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package adbus.models;

import java.util.LinkedList;
import javax.swing.table.AbstractTableModel;

/**
 * TODO: dopisać kolejne metody do filtrów!
 * @author rafal
 */
/**główna klasa KlientTable*/
public class KlientTable extends AbstractTableModel {
    protected Klient client = new Klient();
    protected LinkedList<Klient> clientList = null;
    public void zaladuj() {
        clientList = client.pobierz();
        fireTableDataChanged();
    }
    /**konstruktor klasy KlientTable*/
    public KlientTable() {
        super();
        zaladuj();
    }
    /**metoda zwracająca długość listy klientów*/
    public int getRowCount() {
        return clientList.size();
    }
    @Override
    /**metoda ustawiająca nazwy kolumn w wyświetlanej tabelce klientów*/
    public String getColumnName(int index) {
        switch(index) {
            case 0: return "ID";
            case 1: return "Nazwa";
            case 2: return "NIP";
            case 3: return "Adres";
            case 4: return "Miasto";
            case 5: return "Telefon";
            case 6: return "Mail";
            case 7: return "Data Dodania";
            default: return "";
        }
    }
    /**metoda zwracająca liczbe kolumn tabeli klientów*/
    public int getColumnCount() {
        return 8;
    }

    /**metoda wstawiająca dane do wyświetlanej tabelki klientów*/
    public Object getValueAt(int rowIndex, int columnIndex) {
        Klient k = clientList.get(rowIndex);
        switch(columnIndex) {
            case 0: return k.id_klient;
            case 1: return k.nazwa;
            case 2: return k.nip;
            case 3: return k.adres;
            case 4: return k.miasto;
            case 5: return k.telefon;
            case 6: return k.mail;
            case 7: return k.data_dodania;
            default: return "";
        }
    }
    /**metoda odpowiedzialna za filtrowanie klientów w wyświetlanej tabelce po dacie*/
    public void setDateFilter(String from, String to) {
        client.setDateFilter(from, to);
    }
    /**metoda odpowiedzialna za filtrowanie klientów w wyświetlanej tabelce po nazwie klienta*/
    public void setNameFilter(String name) {
        client.setNameFilter(name);
    }
    /**metoda odpowiedzialna za filtrowanie klientów w wyświetlanej tabelce po numerze nip klienta*/
    public void setNipFilter(String nip) {
        client.setNipFilter(nip);
    }
    /**metoda odpowiedzialna za filtrowanie klientów w wyświetlanej tabelce po adresie klienta*/
    public void setAddressFilter(String address) {
        client.setAddressFilter(address);
    }
    /**metoda odpowiedzialna za filtrowanie klientów w wyświetlanej tabelce po numerze telefonu klienta*/
    public void setPhoneFilter(String phone) {
        client.setPhoneFilter(phone);
    }
    /**metoda odpowiedzialna za filtrowanie klientów w wyświetlanej tabelce po adresie mail klienta*/
    public void setMailFilter(String mail) {
        client.setMailFilter(mail);
    }
    /**metoda odpowiedzialna za filtrowanie klientów w wyświetlanej tabelce po osobie kontaktowej klienta*/
    public void setContactPersonFilter(String contact) {
        client.setContactPersonFilter(contact);
    }
    /**metoda odpowiedzialna za resetowanie filtrów */
    public void resetFilters() {
         client.resetFilters();
         zaladuj();
    }
     /**metoda odpowiedzialna za kasowanie klienta z listy klientów*/
    public void delete(int i) {
        Klient k = clientList.get(i);
        clientList.remove(i);
        k.delete();
        fireTableDataChanged();
    }
}
